/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import facade.EmpresaFacadeLocal;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import entity.Empresa;
import entity.Estadistica;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author ari
 */
@Stateless
public class BeanEmpresa implements BeanEmpresaRemote {
    @PersistenceContext(unitName = "BolsaValor-ejbPU")
    private EntityManager em;
    @EJB
    private EmpresaFacadeLocal empresaFacade;

    static final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public boolean addEmpresa(String empresa, double compras, double ventas) {
        Empresa emp;
        String fecha = format.format(new Date());
        
        try{
            emp = em.createQuery("SELECT e FROM Empresa e JOIN e.estadistica i WHERE e.name = :empresa AND i.fecha = :fecha", Empresa.class)
                    .setParameter("empresa", empresa)
                    .setParameter("fecha", fecha)
                    .getSingleResult();
            
            emp.setCompras(emp.getCompras() + compras);
            emp.setVentas(emp.getVentas() + ventas);
            
            empresaFacade.edit(emp);
        } catch(Exception e) {
            Estadistica est = em.createQuery("SELECT e FROM Estadistica e WHERE e.fecha = :fecha", Estadistica.class)
                    .setParameter("fecha", fecha)
                    .getSingleResult();
            
            emp = new Empresa();
            emp.setName(empresa);
            emp.setEstadistica(est);
            emp.setCompras(compras);
            emp.setVentas(ventas);
            
            empresaFacade.create(emp);
        }
        
        if(em.contains(emp))
            return true;

        em.flush();
        // No se creo
        return false;
    }

    public void persist(Object object) {
        em.persist(object);
    }
    
}
